/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Modelo.ENT_Asistencia;
import Modelo.ENT_Feria;
import Modelo.ENT_Trabajador;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


/**
 *
 * @author Isaac Paliza <anndysaac@hotmail.com>
 */
public class CTRL_AsistenciaDeFeria {

    private static final ConnectionJDBC connectionJDBC = new ConnectionJDBC();
    private static final Statement statement = connectionJDBC.createStatement();
    public static String Mensaje;

    
    
    public static String InsertarListaAsistencia(String listaAsistencia) {
        String sql = "INSERT INTO t_asistencia (idAsistencia, idTrabajador, idFeria, Fecha, Hora, Situacion) "
                + "VALUES " + listaAsistencia;
        try {
            statement.execute(sql);
            return "Asistencia Guardada";
        } catch (SQLException e) {
            return "Error de Guardar Asistencia";
        }
    }
    public static String UpdateListaAsistencia(String listaAsistencia) {
        String sql = "UPDATE t_asistencia "
                + "SET Situacion = CASE idAsistencia "+listaAsistencia;
//                + "WHEN 1 THEN 'Falto' "
//                + "WHEN 2 THEN 'Presente' "
//                + "END "
//                + "WHERE idAsistencia IN (1, 2)";
        try {
            statement.execute(sql);
            return "bien";
        } catch (SQLException e) {
            return "error";
        }
    }
    
    public static List CargarListaACabezera(String idT_Feria) throws SQLException {
        ArrayList<ENT_Feria> ListaTrabajadores = new ArrayList();
        String sql = "SELECT F.idFeria, F.Nombre, F.Ubicacion, C.nombre "
                + "FROM (t_feria AS F "
                + "INNER JOIN t_colegio AS C "
                + "ON F.idColegio = C.idColegio) "
                + "WHERE F.idFeria =" + idT_Feria;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        while (recordingResults.next()) {
            String idFeriaAux = recordingResults.getString(1);
            if (recordingResults.wasNull()) {
                idFeriaAux = "";
            }
            String NombreAux = recordingResults.getString(2);
            if (recordingResults.wasNull()) {
                NombreAux = "";
            }
            String UbicacionAux = recordingResults.getString(3);
            if (recordingResults.wasNull()) {
                UbicacionAux = "";
            }
            String nombreAux = recordingResults.getString(4);
            if (recordingResults.wasNull()) {
                nombreAux = "";
            }
            ListaTrabajadores.add(new ENT_Feria(idFeriaAux, NombreAux, UbicacionAux, 
                    nombreAux, Controlador.Sistema.getFechaActualSistema()));
        }
        return ListaTrabajadores;
    }
    public static List CargarListaHechaTrabajadores(String idFeria, String fecha, String c) throws SQLException {
        ArrayList<ENT_Trabajador> ListaTrabajadores = new ArrayList();
        String sql = "SELECT X.idAsistencia, T.Nombre, T.Apellidos, X.Situacion "
                + "FROM t_asistencia AS X "
                + "INNER JOIN t_trabajador AS T "
                + "ON X.idTrabajador = T.idTrabajador "
                + "WHERE idFeria ="+idFeria+" AND fecha =  '"+fecha+"' AND T.idTipoTrabajador="+c;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        while (recordingResults.next()) {
            String idAsistencia = recordingResults.getString(1);
            if (recordingResults.wasNull()) {
                idAsistencia = "";
            }
            String NombreAux = recordingResults.getString(2);
            if (recordingResults.wasNull()) {
                NombreAux = "";
            }
            String ApellidosAux = recordingResults.getString(3);
            if (recordingResults.wasNull()) {
                ApellidosAux = "";
            }
            String Observaciones = recordingResults.getString(4);
            if (recordingResults.wasNull()) {
                Observaciones = "";
            }
            String ObservacionP = "";
            String ObservacionF = "";
            if(Observaciones.equals("P")){
                ObservacionP = "checked";
                ObservacionF = "";
            }
            if(Observaciones.equals("F")){
                ObservacionP = "";
                ObservacionF = "checked";
            }
            ListaTrabajadores.add(new ENT_Trabajador(idAsistencia, NombreAux, ApellidosAux, Observaciones, ObservacionP, ObservacionF));
        }
        return ListaTrabajadores;
    }
    public static List CargarListaAsistencia(String idFeria, String fecha, String c) throws SQLException {
        ArrayList<ENT_Asistencia> ListaAsistencia = new ArrayList();
        String sql = "SELECT X.idAsistencia, T.Nombre, T.Apellidos, X.Calificacion, X.Observacion "
                + "FROM t_asistencia AS X "
                + "INNER JOIN t_trabajador AS T "
                + "ON X.idTrabajador = T.idTrabajador "
                + "WHERE idFeria ="+idFeria+" AND X.Situacion='P' AND fecha =  '"+fecha+"' AND T.idTipoTrabajador="+c;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        while (recordingResults.next()) {
            String idAsistencia = recordingResults.getString(1);
            if (recordingResults.wasNull()) {
                idAsistencia = "";
            }
            String NombreAux = recordingResults.getString(2);
            if (recordingResults.wasNull()) {
                NombreAux = "";
            }
            String ApellidosAux = recordingResults.getString(3);
            if (recordingResults.wasNull()) {
                ApellidosAux = "";
            }
            String CalificacionAux = recordingResults.getString(4);
            if (recordingResults.wasNull()) {
                CalificacionAux = "";
            }
            String ObservacionAux = recordingResults.getString(5);
            if (recordingResults.wasNull()) {
                ObservacionAux = "";
            }
            
            ListaAsistencia.add(new ENT_Asistencia(idAsistencia, NombreAux, ApellidosAux, CalificacionAux, ObservacionAux));
        }
        return ListaAsistencia;
    }
    public static List CargarListaTrabajadores(String idFeria, String fechaSistema, String tipoTrabajador) throws SQLException {
        ArrayList<ENT_Trabajador> ListaTrabajadores = new ArrayList();
        String sql = "SELECT T.idTrabajador, T.Nombre, T.Apellidos "
                + "FROM (t_trabajador_has_t_feria AS X "
                + "INNER JOIN t_trabajador AS T "
                + "ON X.idTrabajador = T.idTrabajador) "
//                + "INNER JOIN t_asistencia AS A "
//                + "ON X.idTrabajador = A.idTrabajador "
                + "WHERE X.idFeria = "+idFeria+"  AND T.idTipoTrabajador= "+tipoTrabajador;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        while (recordingResults.next()) {
            String idTrabajadorAux = recordingResults.getString(1);
            if (recordingResults.wasNull()) {
                idTrabajadorAux = "";
            }
            String NombreAux = recordingResults.getString(2);
            if (recordingResults.wasNull()) {
                NombreAux = "";
            }
            String ApellidosAux = recordingResults.getString(3);
            if (recordingResults.wasNull()) {
                ApellidosAux = "";
            }
            ListaTrabajadores.add(new ENT_Trabajador(idTrabajadorAux, NombreAux, ApellidosAux, "",  "checked", ""));
        }
        return ListaTrabajadores;
    }
    
   public static List CargarListaTrabajadores(String idFeria, String tipoTrabajador) throws SQLException {
        ArrayList<ENT_Trabajador> ListaTrabajadores = new ArrayList();
        String sql = "SELECT T.idTrabajador, T.Nombre, T.Apellidos "
                + "FROM (t_trabajador_has_t_feria AS X "
                + "INNER JOIN t_trabajador AS T "
                + "ON X.idTrabajador = T.idTrabajador) "
//                + "INNER JOIN t_asistencia AS A "
//                + "ON X.idTrabajador = A.idTrabajador "
                + "WHERE X.idFeria = "+idFeria+" AND T.idTipoTrabajador= "+tipoTrabajador;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        while (recordingResults.next()) {
            String idTrabajadorAux = recordingResults.getString(1);
            if (recordingResults.wasNull()) {
                idTrabajadorAux = "";
            }
            String NombreAux = recordingResults.getString(2);
            if (recordingResults.wasNull()) {
                NombreAux = "";
            }
            String ApellidosAux = recordingResults.getString(3);
            if (recordingResults.wasNull()) {
                ApellidosAux = "";
            }
            ListaTrabajadores.add(new ENT_Trabajador(idTrabajadorAux, NombreAux, ApellidosAux, "",  "checked", ""));
        }
        return ListaTrabajadores;
    }
    public static int comprobarAsistencia(String idFeria, String fechaSistema, String tipoTrabajador) throws SQLException {
        String sql = "SELECT count(*) "
                + "FROM (t_trabajador_has_t_feria AS X "
                + "INNER JOIN t_trabajador AS T "
                + "ON X.idTrabajador = T.idTrabajador) "
                + "INNER JOIN t_asistencia AS A "
                + "ON X.idTrabajador = A.idTrabajador "
                + "WHERE X.idFeria = "+idFeria+" AND A.fecha= '"+fechaSistema+"' AND T.idTipoTrabajador= "+tipoTrabajador;
        ResultSet recordingResults
                = ConnectionJDBC.executeQuery(statement, sql);
        recordingResults.next();
        return recordingResults.getInt(1);
    }
}
